div関数とldiv関数は、整数型の割り算の商と余りを求めます。div関数はint型、ldiv関数はlong int型の割り算です。
C言語の場合、整数型の割り算の商は/演算子で、余りは%演算子で求めることができますので、通常はこれらの演算子を使った方がよいでしょう。
#include <stdlib.h>
div_t div(int numerator, int denominator);
ldiv_t ldiv(long numerator, long denominator);
numeratorは被除数(割られる方の値)を指定します。
denominatorは除数(割る方の値)を指定します。
戻り値として、div_t又は、ldiv_t構造体が返り、この中のquotメンバ(商)とremメンバ(余り)に結果が入っています。quot×denominator+rem=numeratorの関係になります。
プログラム 例
#include <stdio.h> #include <stdlib.h> /* 列数 */ #define ROW_MAX 10 int main(void) { int num; div_t res; for (num = 1; num <= 50; ++num) { printf('%3d', num); res = div(num, ROW_MAX); if (res.rem == 0) { printf('\n'); /* 改行 */ } } return 0; }
例の実行結果
$ ./xdiv.exe 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 $